// 引入API工具
const api = require('../../utils/api.js');
const storage = require('../../utils/storage.js');

Page({
  data: {
    statusBarHeight: 0,
    reportList: [],        // 举报列表
    currentPage: 1,        // 当前页码
    totalPages: 0,         // 总页数
    total: 0,              // 总记录数
    loading: true,         // 加载状态
    loadingMore: false,    // 加载更多状态
    hasMore: true,         // 是否还有更多数据
    error: null            // 错误信息
  },

  onLoad() {
    const windowInfo = wx.getWindowInfo();
    this.setData({
      statusBarHeight: windowInfo.statusBarHeight
    });

    // 加载举报信息
    this.loadReportInfo(true);
  },

  // 返回
  goBack() {
    wx.navigateBack();
  },

  /**
   * 加载举报信息
   * @param {boolean} isRefresh - 是否为刷新（重置页码）
   */
  loadReportInfo(isRefresh = false) {
    console.log('📋 =============== 开始加载举报信息 ===============');

    // 获取用户信息
    const userInfo = storage.getUserInfo();
    
    if (!userInfo || !userInfo.userid) {
      console.log('❌ 用户未登录');
      this.setData({
        loading: false,
        error: '请先登录'
      });
      
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    // 设置加载状态
    if (isRefresh) {
      this.setData({
        loading: true,
        error: null,
        currentPage: 1,
        hasMore: true
      });
      console.log('🔄 刷新模式：重置页码为1');
    } else {
      // 检查是否还有更多数据
      if (!this.data.hasMore) {
        console.log('📭 没有更多数据');
        return;
      }

      this.setData({
        loadingMore: true,
        currentPage: this.data.currentPage + 1
      });
      console.log('📄 加载更多：当前页码为', this.data.currentPage);
    }

    const userId = userInfo.userid;
    const page = this.data.currentPage;

    console.log('👤 当前用户ID:', userId);
    console.log('📄 请求页码:', page);

    // 调用API
    api.getReportInfo(userId.toString(), page)
      .then(response => {
        console.log('✅ 举报信息查询成功:', response);

        if (response.status === 'success' && response.data) {
          const reports = response.data.reports || [];
          const pagination = response.data.pagination || {};

          console.log('📊 获取到', reports.length, '条举报信息');
          console.log('📄 分页信息:', pagination);

          let newReportList = [];
          
          if (isRefresh) {
            // 刷新模式：替换所有数据
            newReportList = reports;
            console.log('🔄 刷新完成：列表包含', newReportList.length, '条记录');
          } else {
            // 加载更多模式：追加数据
            newReportList = this.data.reportList.concat(reports);
            console.log('📈 加载更多完成：列表总计', newReportList.length, '条记录');
          }

          // 判断是否还有更多数据
          const hasMore = pagination.page < pagination.totalPages;

          this.setData({
            reportList: newReportList,
            totalPages: pagination.totalPages || 0,
            total: pagination.total || 0,
            loading: false,
            loadingMore: false,
            hasMore: hasMore,
            error: null
          });

          console.log('📊 当前状态:', {
            '列表数量': newReportList.length,
            '当前页': pagination.page,
            '总页数': pagination.totalPages,
            '总记录': pagination.total,
            '还有更多': hasMore
          });

        } else {
          throw new Error(response.message || '数据格式错误');
        }
      })
      .catch(error => {
        console.error('❌ 加载举报信息失败:', error);
        
        this.setData({
          loading: false,
          loadingMore: false,
          error: error.message || '加载失败'
        });

        wx.showToast({
          title: '加载失败',
          icon: 'none'
        });
      });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    console.log('🔄 下拉刷新');
    this.loadReportInfo(true);
    
    // 延迟停止下拉刷新动画
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  },

  /**
   * 上拉加载更多
   */
  onReachBottom() {
    console.log('📄 触底加载更多');
    
    if (!this.data.hasMore || this.data.loadingMore) {
      console.log('⚠️ 无法加载更多：hasMore=', this.data.hasMore, 'loadingMore=', this.data.loadingMore);
      return;
    }

    this.loadReportInfo(false);
  },

  /**
   * 重新加载
   */
  onRetry() {
    console.log('🔄 用户点击重试');
    this.loadReportInfo(true);
  },

  /**
   * 格式化时间
   * @param {string} dateString - ISO时间字符串
   * @returns {string} 格式化后的时间
   */
  formatDate(dateString) {
    if (!dateString) return '未知时间';
    
    try {
      const date = new Date(dateString);
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      const hour = String(date.getHours()).padStart(2, '0');
      const minute = String(date.getMinutes()).padStart(2, '0');
      
      return `${year}-${month}-${day} ${hour}:${minute}`;
    } catch (e) {
      return dateString;
    }
  },

  /**
   * 获取状态文本
   * @param {string} status - 状态
   * @returns {string} 状态文本
   */
  getStatusText(status) {
    const statusMap = {
      'pending': '待处理',
      'processing': '处理中',
      'resolved': '已解决',
      'rejected': '已拒绝'
    };
    return statusMap[status] || status || '未知';
  },

  /**
   * 获取状态样式类名
   * @param {string} status - 状态
   * @returns {string} 样式类名
   */
  getStatusClass(status) {
    const classMap = {
      'pending': 'status-pending',
      'processing': 'status-processing',
      'resolved': 'status-resolved',
      'rejected': 'status-rejected'
    };
    return classMap[status] || 'status-default';
  }
});

